package com.example.demo.mapper;

import com.example.demo.entity.ArticleLike;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.VO.ArticleLikeVO;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * <p>
 * 文章点赞表 Mapper 接口
 * </p>
 *
 * @author Mr.sdy
 * @since 2024-06-05
 */
@Mapper
public interface ArticleLikeMapper extends BaseMapper<ArticleLike> {
    /**
     * 根据用户ID和文章ID判断是否已经点赞。
     * @return 如果已经点赞，返回1；否则返回0。
     */
    @Insert("INSERT INTO article_like (user_id, article_id,create_time) VALUES (#{userId}, #{articleId},NOW())")
    Integer insertLike(ArticleLike articleLike);

    /**
     * 查询指定文章的点赞数量
     *
     * @param articleId 文章的唯一标识符
     * @return 返回该文章的点赞总数
     */
    @Select("SELECT COUNT(*) FROM article_like WHERE article_id = #{articleId}")
    Integer countLikesByArticle(@Param("articleId") Integer articleId);

    /**
     * 根据用户ID和文章ID查找用户是否点赞。
     * @return 表示指定用户对指定文章的点赞 1是有，0是没有。
     */
    @Select("SELECT * FROM  article_like WHERE user_id = #{userId} AND article_id = #{articleId}")
    List<ArticleLike> selectLikesByUserAndArticle(ArticleLike articleLike);

    // 根据文章查找点赞用户
    @Select("SELECT * FROM article_like WHERE article_id = #{articleId}")
    List<ArticleLike> selectLikesByArticleId(@Param("articleId") Integer articleId);

   //查找所有的用户点赞信息
    @Select("SELECT * FROM article_like where flag = 1")
    List<ArticleLike> selectAllLikes();
    //用户删除点赞
    @Delete("DELETE FROM article_like WHERE user_id = #{userId} AND article_id = #{articleId}")
    Integer cancelLike(ArticleLike articleLike);
}
